Drag and drop 拖放功能

透過拖放操作,使用者可以在不同位置間移動或複製選定的照片、文字和其他內容。拖放的起點稱為“源”,落點稱為“目標”。這些位置可以在同一個容器中(如一個文字檢視),也可以在不同的容器中,甚至在不同的應用間。一般規則是,在相同容器內拖放內容會進行移動,而在不同容器或應用間則是複製。
不同平臺上的拖放操作有所不同:
visionOS:使用者可以透過捏住虛擬物件並沿任何方向(包括z軸)移動它。
iOS和iPadOS:支援觸屏手勢、指標裝置和全鍵盤訪問模式的拖放操作。
Universal Control:允許在Mac和iPad之間拖放內容。
macOS:支援指標裝置、全鍵盤訪問模式和VoiceOver操作拖放。
最佳實踐
儘可能在整個應用中支援拖放:使用者通常會嘗試在各處使用拖放,系統元件(如文字欄位、文字檢視)已內建支援此功能。
提供替代方式:對於不方便或無法執行拖放操作的場景,提供其他方式實現相同功能,如透過選單命令複製和移動專案。
判斷拖放操作是移動還是複製:通常在同一容器內拖放會進行移動,而在不同容器間則進行復制。可根據使用者習慣和防止資料丟失的原則決定是否改變預設行為。
支援多項拖放:在適用的場景中,允許使用者一次性拖放多個專案,提升操作效率。
允許撤銷操作:使用者有時會錯誤放置內容,提供撤銷功能讓使用者恢復原狀,或在不可撤銷時透過提示確認。
提供多種版本的拖動內容:根據目標的支援能力,提供從高到低的內容質量選擇。
支援懸停啟用(Spring Loading):當拖動內容懸停在某些控制元件上時,自動啟用控制元件(如日曆應用中拖動事件懸停到不同日期)。
反饋與使用者控制
顯示拖動影象:在使用者開始拖動後立即顯示半透明的拖動內容,幫助使用者看到目標位置。
提供視覺反饋:當拖動內容懸停在有效的目標位置時,高亮顯示目標位置;當放置在無效位置時,顯示“禁止”圖示。
在內容無法放置時提供反饋:如果放置失敗,內容應回到源位置或淡出消失。
處理長時間傳輸的反饋:在內容傳輸需要時間時,顯示進度指示器或佔位符,確保使用者知道傳輸的狀態。
保持內容的選擇狀態:放置後,目標處的內容應保持選擇狀態,方便使用者繼續操作。
iOS和iPadOS:
支援多次拖動操作,使用者可以在進行拖動的同時新增多個專案。
macOS:
可支援將應用中的內容拖動到Finder中,並以應用可重新開啟的格式儲存。允許使用者在後臺視窗中選擇內容進行拖放,而無需先啟用視窗。
visionOS:
支援在空白區域放置內容,關聯的應用會自動啟動並處理拖動內容。
透過遵循這些最佳實踐,拖放功能能夠更加便捷、高效,提升使用者的操作體驗。